package com.mskj.zxmy.service;

import com.mskj.zxmy.dto.*;
import com.mskj.zxmy.entity.BarcodeManagement;
import com.mskj.zxmy.entity.CKDan;
import com.mskj.zxmy.entity.XssalesDispatchDetails;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public interface OutboundOrderService {
    /**
     * 查询发货单列表
     *
     * @return
     */
    List<ShipmentNoticeDTO> outboundOrderList();

    List<ShipmentNoticeDTO> filterShipmentNotices(Map<String, Object> params);

    Map<String, CKDan> createOutbound();

    List<XssalesDispatchDetails> getDispatchDetailsByShipmentOrderNumber(String shipmentOrderNumber);

    boolean saveCKDanWithDetails(CKDanSaveDTO dto);

    /**
     * 查询出库单列表
     *
     * @return
     */


    PageInfo<CKDanListDTO> getCKDanListWithPage(CKDanListQueryDTO query);

    List<CKDanListDTO> filterCKDanList(Map<String, Object> params);

    CKDanSaveDTO getCKDanListDetails(String cashiersNumber);


    List<CKDanSaveDTO> getCKDanDetailsByXSDan(String xsd);

    void confirmOutbound(BarcodeManagement barcode);


    /**
     * 出库明细相关接口
     *
     * @param documentStatus
     * @return
     */
    List<ck02CheckoutFormCheckout> getOutboundDetails(String documentStatus);

    ck02CheckoutFormCheckout getOutboundDetailById(String detailId);

    PageInfo<ck02CheckoutFormCheckout> filterOutboundDetailsWithPage(OutboundDetailQueryDTO query);

    /**
     * 发货通知单分页查询
     *
     * @param query 分页参数
     * @return 分页结果
     */
    PageInfo<ShipmentNoticeDTO> outboundOrderListWithPage(OutboundOrderListQueryDTO query);

}
